package com.david.utils;

import java.util.ArrayList;
import java.util.List;

import com.david.dao.UserInfoMapper;
import com.david.entity.UserInfo;
import org.springframework.stereotype.Component;
import cn.dev33.satoken.stp.StpInterface;

import javax.annotation.Resource;

/**
 * 自定义权限验证接口扩展
 * @author David
 */
@Component
public class StpInterfaceImpl implements StpInterface {

    @Resource
    UserInfoMapper userInfoMapper;

    /**
     * 返回一个账号所拥有的权限码集合
     */
    @Override
    public List<String> getPermissionList(Object loginId, String loginKey) {
        UserInfo userInfo = userInfoMapper.findByUsername(loginId.toString());
        List<String> list = new ArrayList<String>();
        // 账户没被禁用则有权限
        if(!"禁用".equals(userInfo.getEnabled())){
            if("超级管理员".equals(userInfo.getUserface())){
                // 留言的权力
                list.add("add-message");

                // 用户的看、增删查改
                list.add("user-add");
                list.add("user-delete");
                list.add("user-find");
                list.add("user-update");

            }else if("普通管理员".equals(userInfo.getUserface())){
                list.add("add-message");

                list.add("user-add");
                list.add("user-find");
                list.add("user-update");

            }else{
                list.add("add-message");
            }
        }

        return list;
    }

    /**
     * 返回一个账号是否为超级管理员
     */
    @Override
    public List<String> getRoleList(Object loginId, String loginKey) {
        UserInfo userInfo = userInfoMapper.findByUsername(loginId.toString());
        List<String> list = new ArrayList<String>();
        if("超级管理员".equals(userInfo.getUserface())){
            list.add("super-admin");
        }
        return list;
    }

}
